/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.compomics.fspike.contentprovider.fastaproviders;

import java.io.File;
import java.util.List;
import java.util.Map;

/**
 *
 * @author Kenneth
 */
public interface FastaProvider {

    /**
     * concatenates spikes in the fasta
     *
     * @param contaminantMap map with accession or protein identifier and its
     * sequence
     * @throws Exception
     */
    public void addSpikes(Map<String, String> contaminantMap) throws Exception;

    /**
     * concatenates spikes in the fasta
     *
     * @param uniprotAcessions list of uniprot accessions
     * @throws Exception
     */
    public void addSpikes(List<String> uniprotAcessions) throws Exception;

    /**
     * concatenates a single spike in the fasta
     *
     * @param contaminantName the name of the spike
     * @param contaminantSequence the sequence of the spike
     * @throws Exception
     */
    public void addSingleSpike(String contaminantName, String contaminantSequence) throws Exception;

    /**
     * concatenates a single spike in the fasta
     *
     * @param uniprotAcession a uniprot accession
     * @throws Exception
     */
    public void addSingleSpike(String uniprotAcession) throws Exception;

    /**
     * concatenates the default contaminations in the fasta as are specified in
     * contaminants.fasta
     *
     * @throws Exception
     */
    public void addDefaultSpikes() throws Exception;

    /**
     *
     * @return the clean, unspiked file
     * @throws Exception
     */
    public File getCleanFastaFile() throws Exception;

    /**
     * @return the spiked file
     * @throws Exception
     */
    public File getContaminatedFastaFile() throws Exception;
}
